﻿namespace net.zxteam.ZXLexer.Runtime.XSD
{
	using net.zxteam.ZXLexer.AST;
	using System.Xml.Serialization;
	using net.zxteam.zxlang.Lexer;
	using net.zxteam.ZXLexer.Runtime.Internal;

	public interface IRootGrammarRule : IGrammar
	{
		string id { get; }
	}

	public interface IGrammarRule : IGrammar
	{
		string name { get; }
	}


	public abstract partial class complexRuleType : IGrammarRule
	{
		public abstract Token Accept(IGrammarVisitor visitor);
	}


	public partial class grammar : IGrammar
	{
		public Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitGrammarRule(this);
		}
	}


	public partial class grammarAst : IGrammarRule
	{
		public override Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitAstRule(this);
		}
	}

	public partial class cardinalRuleType : IGrammarRule
	{
		public override Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitCardinalRule(this);
		}
	}

	public partial class choiceRuleType : IGrammarRule
	{
		public override Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitChoiceRule(this);
		}
	}

	public partial class sequenceRuleType : IGrammarRule
	{
		public override Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitSequenceRule(this);
		}
	}

	public partial class referenceRuleType : IGrammarRule
	{
		public Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitReferenceRule(this);
		}
	}

	public partial class rangeRuleType : IGrammarRule
	{
		public Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitRangeRule(this);
		}
	}

	public partial class charRuleType : IGrammarRule
	{
		public Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitCharRule(this);
		}
	}

	public partial class stringRuleType : IGrammarRule
	{
		public Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitStringRule(this);
		}
	}

	public partial class indentationRuleType : IGrammarRule
	{
		public override Token Accept(IGrammarVisitor parserVisitor)
		{
			return parserVisitor.VisitIndentationRule(this);
		}
	}



	public partial class grammarCardinal : IRootGrammarRule
	{
	}

	public partial class grammarChar : IRootGrammarRule
	{
	}

	public partial class grammarChoice : IRootGrammarRule
	{
	}

	public partial class grammarIndentation : IRootGrammarRule
	{
	}

	public partial class grammarRange : IRootGrammarRule
	{
	}

	public partial class grammarSequence : IRootGrammarRule
	{
	}

	public partial class grammarString : IRootGrammarRule
	{
	}
}
